package com.coolrui.domain.prometheus;

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.DistributionSummary;
import io.micrometer.core.instrument.MeterRegistry;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class CustomMetricsService {
    @Value("${spring.profiles.active}")
    private String env;

    private final MeterRegistry registry;

    public CustomMetricsService(MeterRegistry registry) {
        this.registry = registry;
    }

    /**
     * 记录请求，支持通过 uri 和 service 区分不同的接口和服务
     * @param uri     接口URI，比如 UserService.getUser
     * @param service 服务名称，比如 UserService
     */
    public void recordRequest(String uri, String service) {
        Counter counter = registry.counter(
                "custom_service_requests_total",  // 指标名称（固定）
                "env", env,                       // 环境变量
                "uri", uri,                              // 接口URI
                "service", service                       // 服务名称
        );
        counter.increment();
    }

    /**
     * 记录金额，支持通过 uri 和 service 区分不同的接口和服务
     * @param uri     接口URI，比如 UserService.getUser
     * @param service 服务名称，比如 UserService
     * @param amount  金额，单位：元
     */
    public void recordAmount(String uri, String service, Long amount) {
        DistributionSummary counter = registry.summary(
                "custom_service_amount_total",     // 指标名称（固定）
                "env", env,                       // 环境变量
                "uri", uri,                              // 接口URI
                "service", service                       // 服务名称
        );
        counter.record(amount);
    }
}
